class ThreeDGSLCCConfigForCesiumParser {
    constructor(configData) {
        // 初始化配置数据
        this.config = configData || {};
        this.baseUrl = this.config.baseUrl || '';
        this.rightPage = this.config.rightPage || '';
        this.menuItems = this.config.menuItems || [];
        this.singlePageConfig = this.config.singlePageConfig || {};
    }

    // 获取基础URL
    getBaseUrl() {
        return this.baseUrl;
    }

    getRightPage() {
        return this.rightPage;
    }

    // 获取所有菜单项
    getMenuItems() {
        return this.menuItems;
    }

    // 根据ID查找菜单项
    findMenuItemById(id) {
        return this.menuItems.find(item => item.ID === id);
    }

    // 根据类型过滤菜单项
    // filterMenuItemsByType(type) {
    //     return this.menuItems.filter(item => item.type === type);
    // }

    // 获取已加载的菜单项
    getLoadedMenuItems() {
        return this.menuItems.filter(item => item.load);
    }

    getSinglePageConfig() {
        return this.singlePageConfig;
    }

    getSinglePageConfigPath() {
        return this.getSinglePageConfig().path;
    }

    getSinglePageConfigLabel() {
        return this.getSinglePageConfig().label;
    }

    // 添加新菜单项
    // addMenuItem(item) {
    //     this.menuItems.push(item);
    //     return this.menuItems;
    // }
    //
    // // 更新菜单项
    // updateMenuItem(id, updatedItem) {
    //     const index = this.menuItems.findIndex(item => item.ID === id);
    //     if (index !== -1) {
    //         this.menuItems[index] = { ...this.menuItems[index], ...updatedItem };
    //         return true;
    //     }
    //     return false;
    // }
    //
    // // 删除菜单项
    // deleteMenuItem(id) {
    //     const initialLength = this.menuItems.length;
    //     this.menuItems = this.menuItems.filter(item => item.ID !== id);
    //     return initialLength !== this.menuItems.length;
    // }

    // 将配置导出为JSON字符串
    toJson(indent = 2) {
        return JSON.stringify({
            baseUrl: this.baseUrl,
            menuItems: this.menuItems
        }, null, indent);
    }
}

// 使用示例
// const configData = {
//     "baseUrl": "http://127.0.0.1:5500",
//     "menuItems": [
//         {
//             "ID": "1",
//             "name": "东半区",
//             "label": "东半区",
//             "path": "/example/data/3dGS/xx园区-202505261447/xx园区东半区/meta.lcc",
//             "type": "3dgs",
//             "load": true
//         },
//         {
//             "ID": "2",
//             "name": "中吴厅",
//             "label": "中吴厅",
//             "path": "/example/data/3dGS/xx园区-202505261447/中吴厅/meta.lcc",
//             "type": "3dgs",
//             "load": false
//         }
//     ]
// };

// 创建配置解析器实例
// const parser = new ConfigParser(configData);

// // 使用示例方法
// console.log("Base URL:", parser.getBaseUrl());
// console.log("Loaded Items:", parser.getLoadedItems());
//
// // 更新菜单项
// parser.updateMenuItem("2", { load: true });
// console.log("Updated Menu Items:", parser.getMenuItems());
//
// // 导出配置
// console.log(parser.toJson());


// 定义异步代码如下
class ThreeDGSLCCConfigForCesiumHandler {
    constructor() {

    }
    static async fetchThreeDGSLCC(){
        const jsonUrl = "threeDGSLCCConfigForCesium.json";
        try {
            const response = await fetch(jsonUrl);
            if (!response.ok) {
                throw new Error(`HTTP error! status: ${response.status}`);
            }
            return await response.json();
        }catch (error) {
            console.error("获取URL数据时出错:", error);
            return {};
        }
    }

    static async fetchThreeDGSLCCWithJsonUrl(jsonUrl){
        console.log("fetchThreeDGSLCCWithJsonUrl() jsonUrl:",jsonUrl);
        try {
            const response = await fetch(jsonUrl);
            if (!response.ok) {
                throw new Error(`HTTP error! status: ${response.status}`);
            }
            return await response.json();
        }catch (error) {
            console.error("获取URL数据时出错:", error);
            return {};
        }
    }
}

// 类作为导出
export{ ThreeDGSLCCConfigForCesiumParser,ThreeDGSLCCConfigForCesiumHandler }






// 相关代码调用例子在这边
// ThreeDGSLCCConfigForCesiumHandler.fetchThreeDGSLCC().then((configData) => {
//     const parser = new ThreeDGSLCCConfigForCesiumParser(configData);
//     // 配置的基础路径
//     const baseUrl = parser.getBaseUrl();
//     // 右边加载的页面
//     const rightPage = parser.getRightPage();
//     // 已加载的菜单项
//     const menuItems = parser.getLoadedMenuItems();
//     // 这边加载右边界面相关
//     const defaultPage = rightPage;
//     menuItems.forEach(menuItem => {
//
//     });
//
// }).catch(error=>{}).finally(()=>{});

